The present application relates generally to an improved data processing apparatus and method and more specifically to mechanisms for enabling throttling on average write throughput instead of peak write throughput for solid-state storage devices.
A solid-state drive (SSD) is a data storage device that uses solid-state memory to store persistent data with the intention of providing access in the same manner of a traditional block I/O hard disk drive. SSDs are distinguished from traditional hard disk drives (HDDs), which are electromechanical devices containing spinning disks and movable read/write heads. SSDs, in contrast, use microchips which retain data in non-volatile memory chips and contain no moving parts. Compared to electromechanical HDDs, SSDs are typically less susceptible to physical shock, are quieter, and have lower access time and latency. SSDs use the same interface as hard disk drives, thus easily replacing them in most applications.
Lower priced SSDs usually use multi-level cell (MLC) flash memory, which is slower and less reliable than single-level (SLC) flash memory. This can be mitigated or even reversed by the internal design structure of the SSD, such as interleaving, changes to writing algorithms, and higher over-provisioning (more excess capacity) with which the wear-leveling algorithms can work. The ability to use MLC and preferably consumer grade MLC is very important to getting the cost of SSDs down to increase their adoption rate in enterprise applications.
However, MLC devices, or any solid-state memory devices, have severe restrictions on write endurance. More specifically, high rates of write throughput, if sustained for long enough, can cause the SSD to start experiencing bad blocks beyond what it can endure. SSDs are most effective in helping system performance for random operations; therefore, they certainly must be able to accept high write throughputs at times.
In order to ensure enough life, some SSDs apply wear-leveling by throttling performance by not allowing the device to go above a certain absolute maximum. This has the disadvantage of not allowing short excursions to get the data into the SSD so that the operations per second can then be increased. Such throttling can also dramatically increase latency or response time which can trigger cascading events like storage write caches filling up and host buffers filling up resulting in very large latencies as seen by the host.